// Registros
var IdRegistracion = -1;
var TipoRegistracion = -1;
var Modo = 0;
var IdRoomRegistracion = -1;
var cantDiasRegistracion = 0;
var ImporteRegistracion = 0;


//Nuevas registraciones sobre una reserva
function nuevaRegistracionReserva(id, tipo) {

    window.IdReserva = id;
    openRegistraciones(tipo);


}
//Agregar persona a una registración existente
function agregaRegistroAHab(id, tipo) {
    window.IdRegistracion = id;
    openRegistraciones(tipo);

}

//Agrega una registración en un día que está vacio
function openRegistraciones(tipo) {
// abro la ventana y opaco el fondo
    //Modo = tipo;
    clearRegistracion();
    window.pantalla = "registraciones";

    window.TipoRegistracion = tipo;
    $("#principalRegistraciones").load('../registraciones.php');
    $("#principalRegistraciones").css("visibility", "visible");
    $("#blackViel").css("z-index", "1000");
    $("#blackViel").fadeTo("slow", 1.0);

    // cargo los datos en los textbox
    // 
    // Cargo las camas disponibles





    // Pantalla desde un día libre - V
    if (window.TipoRegistracion == 1) {
        $("#txtCheckinRegistracion").val(window.anoInicio + "-" + window.mesInicio + "-" + window.diaInicio);
        $("#txtCheckoutRegistracion").val(window.anoFin + "-" + window.mesFin + "-" + window.diaFin);
        window.cantDiasRegistracion = cantDias(window.mesInicio + "/" + window.diaInicio + "/" + window.anoInicio,
                window.mesFin + "/" + window.diaFin + "/" + window.anoFin) + 1;

        getRoomById(window.roomInicio, "registraciones");

        return;
    }


//    Pantalla desde una reserva - R
    if (window.TipoRegistracion == 2) {
        var dataToSend = "&id=" + IdReserva;
        $.ajax({
            type: "post",
            url: "./src/reservas.php",
            dataType: "json",
            data: "type=5" + dataToSend,
            success: function(data) {
                var lista = data.split(" ");
                $("#txtCheckinRegistracion").val(lista[1]);
                $("#txtCheckoutRegistracion").val(lista[2]);

                var fechaInicioRegistracion = lista[1].split("-");
                var fechaFinRegistracion = lista[2].split("-");

                window.cantDiasRegistracion = cantDias(fechaInicioRegistracion[1] + "/" + fechaInicioRegistracion[2] + "/" + fechaInicioRegistracion[0],
                        fechaFinRegistracion[1] + "/" + fechaFinRegistracion[2] + "/" + fechaFinRegistracion[0]) + 1;



                $("#lblRegistracionCantCamasCounter").text(lista[7] + "/" + lista[6]);
                $("#lblRegistracionANombreDe").text(lista[3] + "-" + lista[4] + " " + lista[5]);
                window.IdRoomRegistracion = lista[8];
                // Si el tipo es 2 => cargo los datos del cliente también al cliente seleccionado
                // Se hizo click sobre la reserva
                if (window.TipoRegistracion == 2) {
                    getClientesById(lista[3], "cargaClienteRegistracionReserva");
                }
                // obtiene información de la habitación
                getRoomById(window.IdRoomRegistracion, "registraciones");


            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert("Status: " + textStatus);
                alert("Error: " + errorThrown);
            }

        });
    }

//    Pantalla desde una ocupación - O
    if (window.TipoRegistracion == 3) {
        var dataToSend = "&id=" + window.IdRegistracion;
        $.ajax({
            type: "post",
            url: "./src/registraciones.php",
            data: "type=6" + dataToSend,
            success: function(data) {
                //alert(data);
                var lista = data.split(" ");
                $("#txtCheckinRegistracion").val(lista[3]);
                $("#txtCheckoutRegistracion").val(lista[4]);


                var fechaInicioRegistracion = lista[3].split("-");
                var fechaFinRegistracion = lista[4].split("-");

                window.cantDiasRegistracion = cantDias(fechaInicioRegistracion[1] + "/" + fechaInicioRegistracion[2] + "/" + fechaInicioRegistracion[0],
                        fechaFinRegistracion[1] + "/" + fechaFinRegistracion[2] + "/" + fechaFinRegistracion[0]) + 1;



                $("#lblRegistracionCantCamasCounter").text(lista[7] + "/" + lista[6]);
                $("#lblRegistracionANombreDe").text(lista[0] + "-" + lista[1] + " " + lista[2]);
                window.IdRoomRegistracion = lista[6];
                // obtiene información de la habitación
                getRoomById(window.IdRoomRegistracion, "registraciones");


            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert("Status: " + textStatus);
                alert("Error: " + errorThrown);
            }

        });
    }


    // oculto los menues
    hideMenu(1);
    hideMenu(2);
}


// obtiene información de la habitación
function recibeDatosHabitacionRegistraciones(data) {
    var roomData = data.split(" ");
    var precioTotal = 0;

    if (window.cantDiasRegistracion >= 30) {
        precioTotal = window.cantDiasRegistracion * parseInt(roomData[5]);
        $("#txtPrecioHabitacionRegistracion").val(precioTotal);
    } else {
        precioTotal = window.cantDiasRegistracion * parseInt(roomData[4]);
        $("#txtPrecioHabitacionRegistracion").val(precioTotal);
    }
}


// Esta función recibe la respuesta desde clientes con los datos del cliente y los redirecciona a donde debe
function recibeDatosCliente(datos, destino) {
    if (destino == "cargaClienteRegistracionReserva") {
        cargaClienteRegistracionReserva(datos);
    }
}


function cargaClienteRegistracionReserva(datos) {
    var arrCliente = datos.split(" ");
    window.IdCliente = arrCliente[0];
    // Busquedas en controles que se repiten
    // busco por nombre
    var input = document.getElementsByName("txtNombre");
    for (var i = 0; i < input.length; i++) {
        if ($(input[i]).parent().parent().parent().parent().attr('id') == window.pantalla) {
            $(input[i]).val(arrCliente[1]).focus();
        }

    }

    // busco por apellido
    input = document.getElementsByName("txtApellido");
    for (var i = 0; i < input.length; i++) {
        if ($(input[i]).parent().parent().parent().parent().attr('id') == window.pantalla) {
            $(input[i]).val(arrCliente[2]);
        }

    }

    // busco por mail
    input = document.getElementsByName("txtMail");
    for (var i = 0; i < input.length; i++) {
        if ($(input[i]).parent().parent().parent().parent().attr('id') == window.pantalla) {
            $(input[i]).val(arrCliente[3]);
        }

    }

    // busco por nrodoc
    input = document.getElementsByName("txtNroDoc");
    for (var i = 0; i < input.length; i++) {
        if ($(input[i]).parent().parent().parent().parent().attr('id') == window.pantalla) {
            $(input[i]).val(arrCliente[5]);
        }

    }

    // busco por tipoDoc
    input = document.getElementsByName("cboTipoDoc");
    for (var i = 0; i < input.length; i++) {
        if ($(input[i]).parent().parent().parent().parent().attr('id') == window.pantalla) {
            $(input[i]).val(arrCliente[4]);
        }

    }

    if (arrCliente[6] == "Si") {
        alert("Este cliente se encuentra imposibilitado para registrarse, por favor, revise la ficha de clientes");

    }
    getClientes('Apellido', 4, 'listado', 'reservas');


}

function hideRegistracion(tipo) {

    $("#principalRegistraciones").css("visibility", "hidden");
    $("#blackViel").css("z-index", "-1");
    $("#blackViel").fadeTo("slow", 0);
    hideMenu(1);
    hideMenu(2);
    hideMenu(3);
}


function getRegistraciones() {

    var ano = $("#cboAnos").prop("value");
    var mes = $("#cboMeses").prop("value");
    var d = new Date();
    var dia = d.getDate();
    data = "&ano=" + ano + "&mes=" + mes + "&dia=" + dia;
    $.ajax({
        type: "post",
        url: "./src/registraciones.php",
        dataType: 'json',
        data: "type=0" + data,
        success: function(data) {
            //$("#listado").html(data);
            //alert(data[0]);
//            alert(data);

            var inicioLibre = 0;
            // recorro todas las reservas
            for (var index = 0; index < data.length; ++index) {
                var arrToSelect = data[index].split(" ");
                // TODO: Crear la lógica para reservas mayores a un mes completo (agregar monthStart<mes && mes<monthEnd)
                var idRegistro = parseInt(arrToSelect[0]);
                var dateStart = parseInt(arrToSelect[1].split("-")[2]);
                var dateEnd = parseInt(arrToSelect[2].split("-")[2]);
                var monthStart = parseInt(arrToSelect[1].split("-")[1]);
                var monthEnd = parseInt(arrToSelect[2].split("-")[1]);
                var yearStart = parseInt(arrToSelect[1].split("-")[0]);
                var yearEnd = parseInt(arrToSelect[2].split("-")[0]);
                var idRoom = parseInt(arrToSelect[5]);
                var idCama = parseInt(arrToSelect[6]);
                var nombreRegistraciones = arrToSelect[7];
                var apellidoRegistraciones = arrToSelect[8];
                var cantidadCamas = 1;
                var libre = 0;


                // Busco el anterior y el posterior
                var arrToSelectAnt;
                var idRegistroAnt;
                if (index > 0) {
                    arrToSelectAnt = data[index - 1].split(" ");
                    idRegistroAnt = parseInt(arrToSelectAnt[0]);

                } else {
                    idRegistroAnt = -1;
                }

                var arrToSelectPos;
                var idRegistroPos;
                if (index < data.length - 1) {
                    arrToSelectPos = data[index + 1].split(" ");
                    idRegistroPos = parseInt(arrToSelectPos[0]);
                } else {
                    idRegistroPos = -1;
                }

                // verifico si están dentro del mismo mes
                if (monthStart != monthEnd) {

                    if (monthStart == mes) {
                        dateEnd = new Date(ano, mes, 0).getDate();
                    } else if (monthEnd == mes) {
                        dateStart = '01';
                        monthStart = monthEnd;
                        yearStart = yearEnd;
                    }
                }

                // verifico para la primera de las reservas si el rango está disponible
                while (libre == 0) {
                    libre = 1;
                    inicioLibre = inicioLibre + 1;
                    for (var x = parseInt(dateStart); x <= parseInt(dateEnd); x++) {

                        var name = yearStart + "-" + monthStart + "-" + x +
                                "-" + idRoom + "-" + inicioLibre + "-C";
                        var toChange = document.getElementById(name);
                        //alert(name);
                        if ($(toChange).val() != "V" && toChange != null) {
                            //alert('loop 1 ' + libre + ' ' + index);
                            libre = 0;
                        }
                    }
                }

                // pinto a partir de la libre
                for (var i = inicioLibre; i <= cantidadCamas + inicioLibre - 1; i++) {
                    for (var x = parseInt(dateStart); x <= parseInt(dateEnd); x++) {
                        var name = yearStart + "-" + monthStart + "-" + x +
                                "-" + idRoom + "-" + i + "-C";
                        //alert('loop 2' + dateEnd);



                        var toChange = document.getElementById(name);

                        // Label con el nombre
                        if (x == parseInt(dateStart)) {
                            var label = yearStart + "-" + monthStart + "-" + x +
                                    "-" + idRoom + "-" + i + "-L";
                            var labelToChange = document.getElementById(label);
                            $(labelToChange).text(nombreRegistraciones + " " + apellidoRegistraciones);
                        }

                        // Celda
                        $(toChange).val("O-" + idRegistro);
                        $(toChange).css("background-color", "whitesmoke");
//                        $(toChange).css("background-color", "black");
                        $(toChange).css("color", "whitesmoke");


                        // Bordes
                        $(toChange).css("border-top-color", "whitesmoke");
                        $(toChange).css("border-bottom-color", "whitesmoke");

                        $(toChange).css("border-left-color", "whitesmoke");
                        $(toChange).css("border-right-color", "whitesmoke");

                        $(toChange).css("border-style", "solid");
                        $(toChange).css("border-width", "4px");

                        // Bordes de inicio y final
                        if (x == parseInt(dateStart)) {
                            $(toChange).css("border-left-color", "#66FF99");
                        }
                        if (x == parseInt(dateEnd)) {
                            $(toChange).css("border-right-color", "#66FF99");
                        }


                        // Verifico si el anterior es el mismo
                        if (idRegistro != idRegistroAnt) {
                            if (i == inicioLibre) {
                                $(toChange).css("border-top-color", "#66FF99");
                            }
                        }

                        if (idRegistro != idRegistroPos) {
                            if (i == cantidadCamas + inicioLibre - 1) {
                                $(toChange).css("border-bottom-color", "#66FF99");
                            }
                        }



                        // onclick
                        $(toChange).bind("click", function()
                        {
                            selectRegistracion(this);

                        });

                        // onhover
                        $(toChange).on('mouseout', function() {
                            hideReservaDetalle();
                        });
                    }
                }
                cantidadCamas = 0;
                inicioLibre = 0;
            }
        }
    });
}

function saveRegistro(tipo) {
    var checkin = $("#txtCheckinRegistracion").prop("value");
    var checkout = $("#txtCheckoutRegistracion").prop("value");
    var idcliente = window.IdCliente;
    var idusuario = $("#userLogged").val();
    var idroom = (window.roomInicio == -1) ? window.IdRoomRegistracion : window.roomInicio;
    var idRegistracionAux = -1;
    window.ImporteRegistracion = $("#txtPrecioHabitacionRegistracion").val();

    if (idcliente == -1) {
        alert("Debe seleccionar un cliente");
        return;
    }

    // Guardo encabezado
    if (window.tipoSelected == "R" || window.tipoSelected == "V") {
        if (window.tipoSelected == "V") {
            window.IdReserva = -1;
        }
        var data = "&idreserva=" + window.IdReserva + "&idusuario=" + idusuario;
        data = "type=5" + data;
        $.ajax({
            type: "post",
            url: "./src/registraciones.php",
            data: data,
            success: function(data) {
//                showResultado($("#resultadosServer"), data);
                idRegistracionAux = data;

                // guardo el detalle de la registración
                saveDetalleRegistracion(idRegistracionAux, checkin, checkout, idcliente, idusuario, idroom);

                if (window.tipoSelected == "R") {
//                    alert(window.IdReserva);
//                    alert(idRegistracionAux);
                    updateMovimientoReserva(window.IdReserva, idRegistracionAux);
                }

                //Salva unicamente
                if (tipo == 1) {

                }
//                guarda y cobra
                else if (tipo == 2) {
                    window.MontoCobro = $("#txtPrecioHabitacionRegistracion").val();
                    window.IdRegistracionCobro = idRegistracionAux;
                    window.IdClienteCobro = idcliente;
                    showCobros();
                }
//                guarda y cobra todo
                else if (tipo == 3) {

                }

            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert("Status: " + textStatus);
                alert("Error: " + errorThrown);
            }

        });
    }

    // 
    if (window.tipoSelected == "O") {
//        alert(IdRoomRegistracion);
        saveDetalleRegistracion(window.IdRegistracion, checkin, checkout, idcliente, idusuario, window.IdRoomRegistracion);
        hideMenu(3);
    }


}

function saveDetalleRegistracion(idRegistracion, checkin, checkout, cliente, usuario, room) {
    getIdAsiento("registraciones");
    
    checkin = checkin.split("-")[0] + "-" + completeDateWithZeros(checkin.split("-")[1]) + "-" + completeDateWithZeros(checkin.split("-")[2]);
    checkout = checkout.split("-")[0] + "-" + completeDateWithZeros(checkout.split("-")[1]) + "-" + completeDateWithZeros(checkout.split("-")[2]);
    

    var data = "&checkin=" + checkin + "&checkout=" + checkout + "&idcliente=" + cliente +
            "&idusuario=" + usuario + "&idroom=" + room + "&idregistracion=" + idRegistracion;
    data = "type=1" + data;
    $.ajax({
        type: "post",
        url: "./src/registraciones.php",
        data: data,
        success: function(data) {
            
//            alert(window.IdAsiento);
            if (window.tipoSelected != "R") {
                // Guarda una entrada en clientes

                saveMovimiento('1.1.2.01', window.IdAsiento,'0', idRegistracion, '-1', cliente, '1', usuario, window.ImporteRegistracion,
                        window.IdMonedaPesos, window.ImporteRegistracion, '1', "Alquiler habitación");
                // Guarda entrada a ventas
                saveMovimiento('4.1.1.02', window.IdAsiento, '0', idRegistracion, '-1', cliente, '1', usuario, window.ImporteRegistracion,
                        window.IdMonedaPesos, window.ImporteRegistracion, '1', "Alquiler habitación");

            }


            showResultado($("#resultadosServer"), data);
            clearRegistracion();
            hideRegistracion(1);
            getDetalleOcupacion();
            resetMarkers();
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("Status: " + textStatus);
            alert("Error: " + errorThrown);
        }

    });
}

function deleteRegistracion(id) {
    var r = confirm("¿Desea realmente eliminar la reserva?");
    if (r == true) {
//        alert(id);
        $.ajax({
            type: "post",
            url: "./src/registraciones.php",
            data: "type=2&id=" + id,
            success: function(data) {
                showResultado($("#resultadosServer"), data);
                clear();
                //getClientes('IdCliente');
                hideReservas(1);
                getDetalleOcupacion();
                window.IdReserva = -1;
            }

        });
    }
}

function selectRegistracion(obj) {
    var strRegistracion = $(obj).val();
    window.IdRegistracion = strRegistracion.split("-")[1];
}


function getRegistracionDetalle(id) {
    $.ajax({
        type: "post",
        url: "./src/registraciones.php",
        data: "type=4&id=" + id,
        success: function(data) {
            $("#detalleReservasPopUp").html(data);
            $("#detalleReservasPopUp").css("opacity", "1");
            $("#detalleReservasPopUp").css("top", yMouse);
            $("#detalleReservasPopUp").css("left", xMouse);
            hideMenu(3);
        }

    });
}

function hideReservaDetalle() {
    $("#detalleReservasPopUp").css("opacity", "0");
}


function clearRegistracion() {
    window.IdCliente = -1;

    $("#txtCheckinRegistracion").val("");
    $("#txtCheckoutRegistracion").val("");
    $("#lblRegistracionCantCamasCounter").text("0/0");
    $("#lblRegistracionANombreDe").text("-");



    // Busquedas en controles que se repiten
    // busco por nombre
    var input = document.getElementsByName("txtNombre");
    for (var i = 0; i < input.length; i++) {
        if ($(input[i]).parent().parent().parent().parent().attr('id') == window.pantalla) {
            $(input[i]).val("").focus();
        }

    }

    // busco por apellido
    input = document.getElementsByName("txtApellido");
    for (var i = 0; i < input.length; i++) {
        if ($(input[i]).parent().parent().parent().parent().attr('id') == window.pantalla) {
            $(input[i]).val("");
        }

    }

    // busco por mail
    input = document.getElementsByName("txtMail");
    for (var i = 0; i < input.length; i++) {
        if ($(input[i]).parent().parent().parent().parent().attr('id') == window.pantalla) {
            $(input[i]).val("");
        }

    }

    // busco por nrodoc
    input = document.getElementsByName("txtNroDoc");
    for (var i = 0; i < input.length; i++) {
        if ($(input[i]).parent().parent().parent().parent().attr('id') == window.pantalla) {
            $(input[i]).val("");
        }

    }

    // busco por tipoDoc
    input = document.getElementsByName("cboTipoDoc");
    for (var i = 0; i < input.length; i++) {
        if ($(input[i]).parent().parent().parent().parent().attr('id') == window.pantalla) {
            $(input[i]).val("");
        }

    }
}
